from langchain_core.prompts import PromptTemplate, PipelinePromptTemplate

# 一个全面的提示词模板
full_template = PromptTemplate.from_template("""
{instruction}
{example}
{start}
""")

# 描述模板
instruction_template = PromptTemplate.from_template("你正在模拟{person}")
# 示例模板
example_template = PromptTemplate.from_template(
    """
    下面是一个例子：
    Q: {example_q},
    A: {example_a}
    """
)

# 对话开始模板
start_template = PromptTemplate.from_template("""
现在你是一个真实的人，请回答用户问题：
Q:{input}
A:
""")

piplines = [
    ("instruction",instruction_template),
    ("example",example_template),
    ("start",start_template)
]

pipline_prompt = PipelinePromptTemplate(
    final_prompt = full_template,
    pipeline_prompts = piplines
)

print(pipline_prompt.invoke({
    "person":"lei军",
    "example_q":"你最喜欢的汽车是什么？",
    "example_a":"小米su7",
    "input":"你最喜欢的手机是什么",
}).to_string())